package com.jqq.generic;

import java.util.ArrayList;

/**
 * @author 姬倩倩
 * @version 1.0
 */
public class Generic01 {
    public static void main(String[] args) {
        //1. ArrayList<Dog>代表只能存放Dog类对象
        //2. 在遍历的时候，可以直接取出Dog类型而不是Object类型
        ArrayList<Dog> dogs = new ArrayList<Dog>();
        dogs.add(new Dog("旺财", 10));
        dogs.add(new Dog("大黄", 5));
        dogs.add(new Dog("发财", 3));

        for (Dog dog :dogs) {
            System.out.println(dog);
        }
        Person<String> jqq = new Person<String>("jqq");
        System.out.println(jqq.f());
    }
}
class Dog{
    private String name;
    private int age;

    public Dog(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "Dog{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
//泛型的作用是可以在类声明时通过一个标识表示类中某个属性的类型
//或者是某个方法的返回值的类型，或者是参数类型

class Person<E>{
    E s;//E表示s的数据类型，该数据类型在定义Person对象的时候指定，
        // 即在编译期间，就确定E是什么类型

    public Person(E s) {//E可以是参数类型
        this.s = s;
    }
    public E f(){//E是返回类型
        return s;
    }
}